<?php

class hookPlugin extends Yaf_Plugin_Abstract {

    public function dispatchLoopStartup(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
        // 任务队列开始执行
        Hook::on('worker_before_process', function (&$queue) {
            Log::out('Queue worker going to process ' . $queue, 'hook');
        });

        // 任务队列超出工作内存
        Hook::on('worker_memory_exceeded', function (&$queue) {
            Log::out('Queue memory exceded over, name:' . $queue, 'hook');
        });

        // 任务队列执行失败
        Hook::on('worker_queue_failed', function (&$job) {
            Log::out('Queue failed, name:' . $job->getQueue(), 'hook');
        });

        // 任务队列重启
        Hook::on('worker_queue_restart', function (&$queue) {
            Log::out('Queue restart, name:' . $queue, 'hook');
        });

        #定义全局监听事件
        Hook::on('file_upload_success', [['attachmentModel', 'newattachment']]);

        // 用户注册成功
        Hook::on('user_register_successed', [['app\hook\userregister', 'successed']]);

        // 订单创建前
        Hook::on('order_create_before', [['app\hook\ordercreate', 'before']]);
        // 订单创建后
        Hook::on('order_create_after', [['app\hook\ordercreate', 'after']]);

        // 订单支付成功 *
        Hook::on('order_payed_after', [['app\hook\orderpayed', 'after']]);

        // 订单关闭前
        Hook::on('order_close_before', [['app\hook\orderclose', 'before']]);
        // 订单关闭后
        Hook::on('order_close_after', [['app\hook\orderclose', 'after']]);

        // 订单取消前
        Hook::on('order_cancel_before', [['app\hook\ordercancel', 'before']]);
        // 订单取消后
        Hook::on('order_cancel_after', [['app\hook\ordercancel', 'after']]); // 后置

        // 订单发货前
        Hook::on('order_send_before', [['app\hook\ordersend', 'before']]);
        // 订单发货后
        Hook::on('order_send_after', [['app\hook\ordersend', 'after']]);

        // 订单确认收货 *
        Hook::on('order_confirm_after', [['app\hook\orderconfirm', 'after']]);

        // 订单评价 *
        Hook::on('order_comment_after', [['app\hook\ordercomment', 'after']]);



        // 预发放佣金 && 计算业绩（个人业绩 && 团队业绩 && 累计分佣） && 判断等级
        Hook::on('commission_init', [['app\hook\commission', 'init']]);

        // 扣除佣金 && 扣除业绩（个人业绩 && 团队业绩 && 累计分佣） && 扣除等级
        Hook::on('commission_deduct', [['app\hook\commission', 'deduct']]);

        // 结算佣金, 转入余额 *
        Hook::on('commission_settle', [['app\hook\commission', 'settle']]);




        // 订单退款 => 扣除佣金 && 扣除业绩（个人业绩 && 团队业绩 && 累计分佣） && 扣除等级
        Hook::on('order_refund_after', [['app\hook\orderrefund', 'after']]);

        // 售后变动，（包含完成，拒绝）
        Hook::on('aftersale_refuse', [['app\hook\aftersale', 'refuse']]);

        // 售后变动，（包含完成，拒绝）
        Hook::on('aftersale_finish', [['app\hook\aftersale', 'finish']]);

        // 活动更新
        Hook::on('activity_update_after', [['app\hook\activityupdate', 'index']]);
        // 活动删除
        Hook::on('activity_delete_after', [['app\hook\activitydelete', 'index']]);

        // 拼团成功
        Hook::on('activity_groupon_finish', [['app\hook\activitygroupon', 'finish']]);
        // 拼团失败，超时，后台手动解散等
        Hook::on('activity_groupon_fail', [['app\hook\activitygroupon', 'fail']]);

        // 分享后
        Hook::on('share_after', []);

        // 商品自动上下架
        Hook::on('goods_auto_show', [['app\hook\goods', 'autoshow']]);

    }


}
